import { defineStore } from 'pinia';
import { getStore, setStore, removeStore } from '@/utils/utils';

interface InterUserStore {
    userInfo: { [key: string]: any }; // 允许其他属性}
    token: string;
    tokenType: string;
    routes: [];
    isCollapse: boolean;
    config: { [key: string]: any };
}
// 用户
export const useUserStore = defineStore('user', {
    state: (): InterUserStore => {
        return {
            userInfo: getStore('sign_admin_userInfo'),
            token: getStore('sign_admin_token'),
            tokenType: getStore('sign_admin_tokenType'),
            routes: [],
            isCollapse: false,
            config: getStore('esign-admin-config'),
        };
    },
    actions: {
        setUserInfo(userInfo: any) {
            this.userInfo = userInfo;
            this.tokenType = userInfo.token_Type;
            setStore('sign_admin_userInfo', userInfo);
            setStore('sign_admin_tokenType', userInfo.token_Type);
            this.routes = userInfo?.routes || [];
        },
        removeUserInfo() {
            this.userInfo = {};
            removeStore('sign_admin_userInfo');
        },
        setToken(token: string) {
            this.token = token;
            setStore('sign_admin_token', token);
        },
        removeToken() {
            this.token = '';
            removeStore('sign_admin_token');
        },
        changeCollapse() {
            this.isCollapse = !this.isCollapse;
        },
        setConfig(val: any) {
            this.config = val;
            setStore('esign-admin-config', val);
        },
        logout() {
            removeStore('sign_admin_token');
            removeStore('sign_admin_userInfo');
            removeStore('sign_admin_tokenType');
            removeStore('esign-admin-acount');
            removeStore('esign-admin-config');
            removeStore('esign-admin-permissionCodes');
        },
    },
    getters: {},
});
